/*
* Copyright 2025 NXP
* NXP Proprietary. This software is owned or controlled by NXP and may only be used strictly in
* accordance with the applicable license terms. By expressly accepting such terms or by downloading, installing,
* activating and/or otherwise using the software, you are agreeing that you have read, and that you agree to
* comply with and are bound by, such license terms.  If you do not agree to be bound by the applicable license
* terms, then you may not retain, install, activate or otherwise use the software.
*/

#ifndef GUI_GUIDER_H
#define GUI_GUIDER_H
#ifdef __cplusplus
extern "C" {
#endif

#include "lvgl.h"


typedef struct
{
  
	lv_obj_t *home;
	bool home_del;
	lv_obj_t *home_digital_clock;
	lv_obj_t *home_c_sd_kqzl;
	lv_obj_t *home_icon_sd;
	lv_obj_t *home_label_sd;
	lv_obj_t *home_text_sd;
	lv_obj_t *home_label_kqzl;
	lv_obj_t *home_text_kqzl;
	lv_obj_t *home_icon_kqzl;
	lv_obj_t *home_text_date;
	lv_obj_t *home_setting;
	lv_obj_t *home_calendar;
	lv_obj_t *home_alerm;
	lv_obj_t *page_calendar;
	bool page_calendar_del;
	lv_obj_t *page_calendar_calendar;
	lv_obj_t *page_calendar_c_appbar;
	lv_obj_t *page_calendar_c_back;
	lv_obj_t *page_calendar_label_calendar;
	lv_obj_t *page_alerm;
	bool page_alerm_del;
	lv_obj_t *page_alerm_cont_2;
	lv_obj_t *page_alerm_a_back;
	lv_obj_t *page_alerm_label_alerm;
	lv_obj_t *page_alerm_alerm_add;
	lv_obj_t *page_alerm_list_1;
	lv_obj_t *page_alerm_list_1_item0;
	lv_obj_t *page_alerm_add;
	bool page_alerm_add_del;
	lv_obj_t *page_alerm_add_cont_1;
	lv_obj_t *page_alerm_add_spinbox_2;
	lv_obj_t *page_alerm_add_spinbox_2_btn_plus;
	lv_obj_t *page_alerm_add_spinbox_2_btn_minus;
	lv_obj_t *page_alerm_add_spinbox_1;
	lv_obj_t *page_alerm_add_spinbox_1_btn_plus;
	lv_obj_t *page_alerm_add_spinbox_1_btn_minus;
	lv_obj_t *page_alerm_add_label_3;
	lv_obj_t *page_alerm_add_label_2;
	lv_obj_t *page_alerm_add_cont_2;
	lv_obj_t *page_alerm_add_ac_back;
	lv_obj_t *page_alerm_add_label_1;
	lv_obj_t *page_alerm_add_btn_1;
	lv_obj_t *page_alerm_add_btn_1_label;
	lv_obj_t *page_setting;
	bool page_setting_del;
	lv_obj_t *page_setting_cont_2;
	lv_obj_t *page_setting_s_back;
	lv_obj_t *page_setting_label_1;
}lv_ui;

typedef void (*ui_setup_scr_t)(lv_ui * ui);

void ui_init_style(lv_style_t * style);

void ui_load_scr_animation(lv_ui *ui, lv_obj_t ** new_scr, bool new_scr_del, bool * old_scr_del, ui_setup_scr_t setup_scr,
                           lv_screen_load_anim_t anim_type, uint32_t time, uint32_t delay, bool is_clean, bool auto_del);

void ui_animation(void * var, uint32_t duration, int32_t delay, int32_t start_value, int32_t end_value, lv_anim_path_cb_t path_cb,
                  uint32_t repeat_cnt, uint32_t repeat_delay, uint32_t playback_time, uint32_t playback_delay,
                  lv_anim_exec_xcb_t exec_cb, lv_anim_start_cb_t start_cb, lv_anim_completed_cb_t ready_cb, lv_anim_deleted_cb_t deleted_cb);


void init_scr_del_flag(lv_ui *ui);

void setup_bottom_layer(void);

void setup_ui(lv_ui *ui);

void video_play(lv_ui *ui);

void init_keyboard(lv_ui *ui);

extern lv_ui guider_ui;


void setup_scr_home(lv_ui *ui);
void setup_scr_page_calendar(lv_ui *ui);
void setup_scr_page_alerm(lv_ui *ui);
void setup_scr_page_alerm_add(lv_ui *ui);
void setup_scr_page_setting(lv_ui *ui);
LV_IMAGE_DECLARE(_sd_RGB565A8_31x25);
LV_IMAGE_DECLARE(_kqzl_RGB565A8_20x20);
LV_IMAGE_DECLARE(_setting2_RGB565A8_90x90);
LV_IMAGE_DECLARE(_calendar_RGB565A8_100x100);
LV_IMAGE_DECLARE(_nz1_RGB565A8_100x100);
LV_IMAGE_DECLARE(_back_RGB565A8_30x30);
LV_IMAGE_DECLARE(_add_RGB565A8_35x35);

LV_FONT_DECLARE(lv_font_Antonio_Regular_92)
LV_FONT_DECLARE(lv_font_montserratMedium_16)
LV_FONT_DECLARE(lv_font_SourceHanSerifSC_Regular_16)
LV_FONT_DECLARE(lv_font_Antonio_Regular_16)
LV_FONT_DECLARE(lv_font_SourceHanSerifSC_Regular_25)
LV_FONT_DECLARE(lv_font_montserratMedium_12)


#ifdef __cplusplus
}
#endif
#endif
